/**
 * 
 */
package com.gwcloud.leetcode.interview100;

import java.util.HashMap;

/**
 * @ClassName   : Leetcode0454 
 * @author      : ganwei 
 * @date        : 2020年5月30日
 * @Description : Leetcode0454 四数相加 II
 */
public class Leetcode0454 {
	/**
	 * -解题思路,暴力美学,但是AC不了
	 */
    public int fourSumCount(int[] A, int[] B, int[] C, int[] D) {
    	int len = A.length;
    	int count = 0;
    	for(int i = 0; i < len; i++){
    		for(int j = 0; j < len; j++){
    			for(int k=0; k < len; k++){
    				for(int l = 0; l < len; l++){
    					if(A[i]+B[j]+C[j]+D[k] == 0){
    						count++;
    					}
    				}
    			}
    		}
    	}
    	return count;
    }
    /**
     * -解法2，
     */
    public int fourSumCount_1(int[] A, int[] B, int[] C, int[] D) {
    	HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
    	int len = A.length;
    	int res = 0;
    	for(int i = 0; i < len; i++){
    		for(int j = 0; j < len; j++){
    			map.put(A[i]+B[j], map.getOrDefault(A[i]+B[j], 0)+1);
    		}
    	}
    	
    	for(int i = 0; i < len; i++){
    		for(int j = 0; j < len; j++){
    			int sumCD = -(C[i]+D[j]);
    			if(map.containsKey(sumCD)){
    				res += map.get(sumCD);
    			}
    		}
    	}
    	return res;
    }
    /**
     * -主函数
     */
    public static void main(String[] args){
    	
    }
}
